/**
 * 模块的控制器 
 */
Ext.define('app.view.module.ModuleController', {

	extend: 'Ext.app.ViewController',
	
	alias: 'controller.module',
	
	requires: [
		'Ext.window.MessageBox',
        'Ext.window.Toast'
	],
	
	init: function() {
		Ext.log('modulecontroller.init');
	},
	
	//当选中的一条记录发生变化时触发此事件
	selectionChange: function(model, selected, eOpts) {
		// 设置删除按钮的状态
		this.getView().down('toolbar button#delete')[selected.length > 0 ? 'enable' : 'disable']();
		
		//选中行数据后，修改grid的标题
		var viewModel = this.getView().getViewModel();
		// 下面将组织选中的记录的name显示在title上，有二种方案可供选择，一种是用下面的MVVM特性，第二种是调用refreshTitle()  
    	var selectedNames = ''  
    	if (selected.length > 0) {  
        if (!!selected[0].getNameValue())  
            selectedNames = selectedNames
            	+ '　『<em>' + selected[0].getNameValue()  
                + '</em>'  
                + (selected.length > 1 ? ' 等' + selected.length + '条' : '') + '』';  
    	}  
    	viewModel.set('selectedNames', selectedNames); // 修改ModuleModel中的数据，修改好后会自动更新bind的title  
    	// this.getView().down('grid').refreshTitle(); // 这是不用MVVM特性的做法
	},
	
	// 新增一条记录
	addRecord: function(button) {
		var grid = this.getView().down('modulegrid');
		var model = Ext.create(grid.getStore().model);
		model.set('tf_id', 0);  
  
        grid.getStore().insert(0, model); 
        grid.getSelectionModel().select(model); // 选中当前新增的记录
	},
	
	// 根据选中的记录复制新增一条记录
	addRecordWithCopy: function(button) {
		var grid = this.getView().down('modulegrid'),
			sm = grid.getSelectionModel();
			
		if (sm.getSelection().length != 1) {
			Ext.toast({  
                    title : '警告',  
                    html : '请先选择一条记录，然后再执行此操作！',  
                    saveDelay : 10,  
                    align : 'tr',  
                    closable : true,  
                    minWidth : 200,  
                    useXAxis : true,  
                    slideInDuration : 500  
                });  
        	return; 
		}
		var model = Ext.create(grid.getStore().model); //得到一条记录，然后遍历这个record的各个字段
		Ext.Array.each(model.fields, function(field) {
			model.set(field.name, sm.getSelection()[0].get(field.name));
		});
		model.set('tf_id', 1);  // 设置为null,可自动增加  
		grid.getStore().insert(0, model);
		sm.select(model); // 选中当前新增的记录  
	},
	
	//删除多条记录
	deleteRecords: function(button) {
		var grid = this.getView().down('modulegrid'),
			selection = grid.getSelectionModel().getSelection(),
			message = '';
		if (selection.length == 1) {
			message += '『' + selection[0].get('tf_name') + '』 吗?';
		
		} else { //选择了多条记录
			message = '<ol>';
			Ext.Array.each(selection, function(record) {
				message += '<li>' + record.get('tf_name') +'</li>';
			});
			message += '</ol>';
			message = '以下' + selection.length + ' 条记录吗？' + message;
		}	
		Ext.Msg.confirm(
			'确定删除', 
			'确定要删除 <strong>' + this.getView().getViewModel().get('tf_title') + '</strong>中的' + message, 
			function(btn) {
				if (btn == 'yes') {
					grid.getStore().remove(selection);  
                    grid.getStore().sync();  
				}
			}
		);
	},
	
	//编辑一条数据
	editRecord : function(button) {  
	    var window = Ext.widget('basewindow',{  
	        viewModel : this.getView().getViewModel()  
	    });  
	    
	    window.down('baseform').setData(this.getView().down('modulegrid').getSelectionModel().getSelection()[0]);
	    
	    window.show();  
	}
}); 